package JVM.第06篇_垃圾回收篇;

/**
 *  heap-->对象的生命周期---》OOM(java.lang.OutOfMemoryError) 内存不足错误
 *     更改java的虚拟机默认最大内存 -Xms1024m -Xmx1024m -XX:+PrintGCDetails
 *     -Xmn：新生区
 *     GC算法：
 *       1.引用计数算法
 *              优点:实现简单，垃圾对象便于辨识;判定效率高，回收没有延迟性。
 *              缺点1:它需要单独的字段存储计数器，这样的做法增加了存储空间的开销。
 *              缺点2:每次赋值都需要更新计数器，伴随着加法和减法操作，这增加了时间开销。
 *              缺点3:引用计数器有一个严重的问题，即无法处理循环引用的情况。
 *                   这是一条致命缺陷，导致在Java的垃圾回收器中没有使用这类算法。
 *
 *          如果就想用此算法，怎么解决循环引用
 *            ●引用计数算法，是很多语言的资源回收选择，例如因人工智能而更加火热的Python,
 *            它更是同时支持引用计数和垃圾收集机制。
 *            ●具体哪种最优是要看场景的，业界有大规模实践中仅保留引用计数机制，以提高吞吐量的尝试。
 *            ●Java并没有选择引用计数，是因为其存在一个基本的难题，也就是很难处理循环引用关系。
 *            ●Python如何解决循环引用?
 *                  ●手动解除:很好理解，就是在合适的时机，解除引用关系。
 *                  ●使用弱引用 weakref, weakref 是Python提供的标准库，旨在解决循环引用。
 *
 *
 */
public class D1_引用计数算法 {

}
